package com.hygenics.comparator; import java.util.Comparator; public class CompareObjects<E> implements Comparator<E>{ public CompareObjects(){ } /** * Compare two generic values * if o is < co -> retvalue=-1 * else if o=co -> revalue=0 * else retvalue 1 * * Implements and overrides Comparator to avoid instantiating a new class for every arraylist object * * @param o -compare * @param co -compare to * @return revalue - the integer value representing the result */ public int compare(Object o, Object co) { // TODO compare two objects of the same type int retvalue=-2; if(o instanceof java.lang.String & co instanceof java.lang.String){ //compare strings String comp=(String) o; String compto=(String) co; int i=0; while(retvalue==-2 & i<comp.length()) { if(i> (compto.length()-1) & i< (comp.length()-1)) { retvalue=1; } else if(i>(comp.length()-1) & i < (compto.length()-1)) { retvalue=-1; } else if(i>comp.length() & i>compto.length()) { retvalue=0; } else if(comp.charAt(i)<compto.charAt(i)){ retvalue=-1; } else if(comp.charAt(i)>compto.charAt(i)) { retvalue=1; } i++; } } else{ //compare numbers and characters if(o instanceof java.lang.Float){ if((java.lang.Float) o == (java.lang.Float)co) { retvalue=0; } else if((java.lang.Float) o < (java.lang.Float) co){ retvalue=-1; } else{ retvalue=1; } } else if(o instanceof java.lang.Double & co instanceof java.lang.Double){ if((java.lang.Float) o == (java.lang.Float)co) { retvalue=0; } else if((java.lang.Float) o < (java.lang.Float) co){ retvalue=-1; } else{ retvalue=1; } } else if(o instanceof java.lang.Character & co instanceof java.lang.Character){ if((java.lang.Character) o == (java.lang.Character)co){ retvalue=0; } else if((java.lang.Character)o < (java.lang.Character)co){ retvalue=-1; } else{ retvalue=1; } } else if(o instanceof java.lang.Integer & co instanceof java.lang.Integer){ if((java.lang.Integer) o ==(java.lang.Integer) co){ retvalue=0; } else if((java.lang.Integer) o < (java.lang.Integer) co) { retvalue=-1; } else{ retvalue=1; } } } return retvalue; } }